package Sintactico;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.ObjectOutputStream;

import Lexico.AnalizadorLexico;
import MaquinaVirtual.Evaluador;

public class Tiny {

    public static void main(String[] args)  {
     try{  

       if (args.length != 2) {
         System.err.println("ERROR: Se precisa indicar el archivo fuente y el archivo objeto");
         System.exit(0);
       } 
       InputStream input = new FileInputStream(args[0]);   
       AnalizadorLexico analizadorLexico = new AnalizadorLexico(input);
          ConstructorArbolesTiny constructorArboles = 
                   new ConstructorArbolesTiny(analizadorLexico);
     TinyGA.Programa prog = constructorArboles.parse();
      Evaluador evaluador = new Evaluador();              
       if (evaluador.evalua(prog.error()).val().hayError()) {
           for(String e: prog.error().val().errores())
		    System.out.println(e);
	}
	else {
          ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(args[1]));
          out.writeObject(evaluador.evalua(prog.cod()).val());           
       }
     }
    catch(Exception e) {
   e.printStackTrace();
      System.err.println("ERROR:"+e);
      System.exit(1);
    }
 }
}    
